var conversation_vue = new Vue({
        el: '#conversation_app',
        data() {
            return {
                recordList: recordList || [],      // 对话记录列表
                agentList: agentList || [],       // 机器人列表
                sessionStr: '',
                searchStr: '',                    // 搜索关键词
                selectedRobot: '',                // 选中的机器人
                dateRange: [],                    // 日期范围
                selectedType: '',                // 选中的类型
                selectedConversations: [],        // 批量选中的对话
                pagination: {                     // 分页信息
                    current: pagination.current || 1,
                    size: pagination.size || 10,
                    total: pagination.total || 0
                },

                // 聊天详情展示
                showDetail: false,
                // 当前会话的聊天记录
                currentMessages: [],
                // 当前选中的会话
                currentSession: null,
                // 新增数据
                currentMessageIndex: 1,
                // 初始化 详情页的分页信息
                detailPagination: {
                    current: 1,
                    size: 10,
                    total: 0,
                    pages: 0
                }
            }
        },

        computed: {},

        methods: {
            // 搜索对话
            handleSearch() {
                const params = {
                    // 添加当前页码
                    page: this.pagination.current,
                    // 添加每页条数
                    size: this.pagination.size,
                    // 搜索关键词
                    keyWord: this.searchStr.trim(),
                    agentId: this.selectedRobot || null,
                    source: this.selectedType || null,
                    startTime: this.dateRange[0] ? dayjs(this.dateRange[0]).format('YYYY-MM-DD') : '',
                    endTime: this.dateRange[1] ? dayjs(this.dateRange[1]).format('YYYY-MM-DD') : '',
                    sessionId: this.sessionStr.trim(),
                };
                console.log('搜索参数:', params);
                // 过滤掉空参数
                const filteredParams = Object.fromEntries(
                    Object.entries(params).filter(([_, v]) => v !== null && v !== '')
                );
                // 这里调用API获取数据
                this.fetchConversations(filteredParams);
            },

            // 获取对话记录
            fetchConversations(f) {
                api_robot_session_list(f, (res) => {
                    if (res.code === 200) {
                        console.log('获取对话记录成功888:', res.data);
                        // 更新对话记录列表
                        this.recordList = [...(res.data.records || [])];

                        console.log('列表信息:', this.recordList);
                        // 更新分页信息

                        this.pagination = {
                            current: res.data.current || 1,
                            size: res.data.size || 10,
                            total: res.data.total || 0
                        };

                        this.$set(this, 'pagination', this.pagination || []);

                    } else {
                        // this.$message.error('操作失败: ' + (res.message || '未知错误'));

                        // 失败时重置数据（可选）
                        this.recordList = [];
                        this.pagination = {
                            current: 1,
                            size: 10,
                            total: 0
                        };

                        // 清空选中和详情
                        this.selectedConversations = [];
                    }
                })
            },


            // 重置搜索条件
            resetSearch() {
                this.searchStr = '';
                this.selectedRobot = '';
                this.dateRange = [];
                this.selectedType = '';
                this.sessionStr = '';
                this.handleSearch();
            },

            // 表格选择变化
            handleSelectionChange(selection) {
                this.selectedConversations = selection;
            },


            // 删除单条对话
            deleteConversation(row) {
                this.$confirm('确定删除这条对话吗?', '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                }).then(() => {
                    // 调用删除API
                });
            },

            // 批量删除
            batchDelete() {
                if (!this.selectedConversations.length) return;

                this.$confirm(`确定删除选中的${this.selectedConversations.length}条对话吗?`, '提示', {
                    confirmButtonText: '确定',
                    cancelButtonText: '取消',
                    type: 'warning'
                }).then(() => {
                    // 调用批量删除API
                });
            },

            // 分页大小变化
            handleSizeChange(size) {
                this.pagination.size = size;
                console.log('分页大小:', size);
                this.pagination.current = 1; // 重置为第一页
                this.handleSearch(); // 重新加载数据
            },

            // 当前页变化
            handleCurrentChange(page) {
                this.pagination.current = page;
                console.log('当前页:', page);
                this.handleSearch(); // 重新加载数据
            },

            // 查看会话详情
            showConversationDetail(row) {
                console.log('查看会话详情', row);
                this.$set(this, 'showDetail', true);
                // 禁用body滚动
                document.body.style.overflow = 'hidden';
                this.currentSession = row;
                // 初始化详情页的分页信息
                this.detailPagination = {
                    current: 1,
                    size: 10,
                    total: 0,
                }
                this.currentMessageIndex = 1;
                // 调用API获取聊天记录
                this.fetchChatMessages(row.sessionId);
            },

            // 关闭详情
            closeDetail() {
                this.showDetail = false;
                this.currentMessages = [];
                // 恢复body滚动
                document.body.style.overflow = '';
            },
            // 导航方法
            goFirst(sessionId) {
                this.currentMessageIndex = 1;
                this.detailPagination.current = this.currentMessageIndex;
                this.loadCurrentMessage(sessionId);
            },
            goPrev(sessionId) {
                if (this.currentMessageIndex > 1) {
                    this.currentMessageIndex--;
                    this.detailPagination.current = this.currentMessageIndex;
                    this.loadCurrentMessage(sessionId);
                }
            },
            goNext(sessionId) {
                if (this.currentMessageIndex < this.detailPagination.pages) {
                    this.currentMessageIndex++;
                    this.detailPagination.current = this.currentMessageIndex;
                    console.log('当前页:', this.currentMessageIndex);
                    this.loadCurrentMessage(sessionId);
                }
            },
            goLast(sessionId) {
                this.currentMessageIndex = this.detailPagination.pages;
                this.detailPagination.current = this.detailPagination.pages;
                this.loadCurrentMessage(sessionId);
            },

            // 加载当前消息
            loadCurrentMessage(sessionId) {
                // 这里可以添加高亮当前消息的逻辑
                this.fetchChatMessages(sessionId);
            },

            // 检测内容是否为Markdown格式（与chat.js保持一致）
            isMarkdownContent: function(content) {
                if (!content || typeof content !== 'string') return false;
                
                // Markdown特征检测
                var markdownPatterns = [
                    /^#{1,6}\s+.+$/m,           // 标题 # ## ###
                    /\*\*[^*]+\*\*/,            // 粗体 **text**
                    /\*[^*]+\*/,                // 斜体 *text*
                    /`[^`]+`/,                  // 行内代码 `code`
                    /```[\s\S]*?```/,           // 代码块 ```code```
                    /^\s*[-*+]\s+.+$/m,        // 无序列表 - * +
                    /^\s*\d+\.\s+.+$/m,        // 有序列表 1. 2.
                    /^\s*>\s+.+$/m,            // 引用 >
                    /\[([^\]]+)\]\(([^)]+)\)/,  // 链接 [text](url)
                    /!\[([^\]]*)\]\(([^)]+)\)/, // 图片 ![alt](url)
                    /^\s*\|.+\|.*$/m,          // 表格 |col1|col2|
                    /^---+$/m,                  // 分隔线 ---
                    /~~[^~]+~~/                 // 删除线 ~~text~~
                ];
                
                // 至少匹配2个模式才认为是markdown
                var matchCount = 0;
                for (var i = 0; i < markdownPatterns.length; i++) {
                    if (markdownPatterns[i].test(content)) {
                        matchCount++;
                        if (matchCount >= 2) return true;
                    }
                }
                
                // 如果只有一个模式但是很明显的markdown特征，也认为是markdown
                if (matchCount === 1) {
                    // 检查是否有明显的markdown特征
                    if (/```[\s\S]*?```/.test(content) ||    // 代码块
                        /^#{1,6}\s+.+$/m.test(content) ||    // 标题
                        /^\s*\|.+\|.*$/m.test(content)) {    // 表格
                        return true;
                    }
                }
                
                return false;
            },

            // 通用的链接处理方法（与chat.js保持一致）
            processLinksInMessage: function(message, isWelcomeMessage) {
                if (!message) return message;
                
                // URL正则表达式，匹配http、https协议的链接
                var urlRegex = /(https?:\/\/[^\s<>"{}|\\^`\[\]]+)/gi;
                
                // 替换链接为HTML链接，添加特殊样式和属性
                var processedMessage = message.replace(urlRegex, function(url) {
                    // 安全检查：只允许http和https协议
                    if (!url.match(/^https?:\/\//i)) {
                        return url; // 如果不是安全协议，直接返回原文本
                    }
                    
                    // 对URL进行基本的安全检查，但不转义用于href属性的URL
                    // 只需要转义双引号，因为href属性值用双引号包围
                    var hrefUrl = url.replace(/"/g, '&quot;');
                    
                    // 截断显示过长的URL
                    var displayUrl = url.length > 50 ? url.substring(0, 47) + '...' : url;
                    // 对显示的URL进行HTML转义
                    var safeDisplayUrl = displayUrl.replace(/[<>&"']/g, function(match) {
                        var escapeMap = {
                            '<': '&lt;',
                            '>': '&gt;',
                            '&': '&amp;',
                            '"': '&quot;',
                            "'": '&#x27;'
                        };
                        return escapeMap[match];
                    });
                    
                    // 对title属性中的URL也进行转义
                    var titleUrl = url.replace(/"/g, '&quot;');
                    
                    // 根据消息类型选择不同的CSS类
                    var linkClass = isWelcomeMessage ? 'welcome-msg-link' : 'chat-msg-link';
                    
                    return '<a href="' + hrefUrl + '" target="_blank" rel="noopener noreferrer" class="' + linkClass + '" title="点击打开链接: ' + titleUrl + '">' + safeDisplayUrl + '</a>';
                });
                
                return processedMessage;
            },

            // 获取聊天记录的方法
            fetchChatMessages(sessionId) {
                const params = {
                    sessionId: sessionId,
                    page: this.detailPagination.current,
                    size: this.detailPagination.size
                }
                console.log('获取聊天记录参数:', params)
                api_get_chat_messages(params, (res) => {
                    if (res.code === 200) {
                        console.log('获取聊天记录成功:', res.data);
                        // 处理消息内容 - 支持Markdown渲染
                        var messages = [...res.data.records];
                        messages.forEach(function(message) {
                            if (message.content) {
                                // 检测是否为Markdown内容
                                if (this.isMarkdownContent(message.content)) {
                                    // 使用window对象上的marked和DOMPurify
                                    if (typeof window.marked !== 'undefined' && typeof window.DOMPurify !== 'undefined') {
                                        // 先处理链接，再进行Markdown解析和安全过滤
                                        var contentWithLinks = this.processLinksInMessage(message.content, false);
                                        message.content = DOMPurify.sanitize(marked.parse(contentWithLinks), {
                                            ALLOWED_TAGS: ['p', 'br', 'strong', 'em', 'code', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'li', 'blockquote', 'a', 'table', 'thead', 'tbody', 'tr', 'th', 'td', 'del', 'hr', 'img'],
                                            ALLOWED_ATTR: ['href', 'target', 'rel', 'class', 'title', 'src', 'alt', 'width', 'height'],
                                            ALLOW_DATA_ATTR: false
                                        });
                                    } else {
                                        // 降级处理：只处理链接和基本的HTML转义
                                        var escapedContent = message.content
                                            .replace(/&/g, '&amp;')
                                            .replace(/</g, '&lt;')
                                            .replace(/>/g, '&gt;')
                                            .replace(/"/g, '&quot;')
                                            .replace(/'/g, '&#x27;')
                                            .replace(/\n/g, '<br>');
                                        message.content = this.processLinksInMessage(escapedContent, false);
                                    }
                                } else {
                                    // 非Markdown内容，只进行链接处理和基本的HTML转义
                                    var escapedContent = message.content
                                        .replace(/&/g, '&amp;')
                                        .replace(/</g, '&lt;')
                                        .replace(/>/g, '&gt;')
                                        .replace(/"/g, '&quot;')
                                        .replace(/'/g, '&#x27;')
                                        .replace(/\n/g, '<br>');
                                    message.content = this.processLinksInMessage(escapedContent, false);
                                }
                            }
                        }.bind(this));
                        this.currentMessages = messages;
                        console.log('获取聊天记录成功222:', this.currentMessages);
                        // 更新分页信息
                        this.detailPagination = {
                            current: res.data.current || 1,
                            size: res.data.size || 10,
                            total: res.data.total || 0,
                            pages: res.data.pages || 1
                        };
                        this.$set(this, 'detailPagination', this.detailPagination || [])
                    } else {
                        pxmu.fail('操作失败: ' + res.message);
                        this.currentMessages = [];
                        this.detailPagination = {
                            current: 1,
                            size: 10,
                            total: 0
                        }
                    }
                });
            }

        },

        mounted() {

        }
    })

;
